﻿using log4net.Config; 
using smforj.common.model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
using System.Linq;
using System.Text;

namespace smforj.common.dao
{
    /// <summary>
    /// 
    /// </summary>
    public interface ICommodityDao
    { 
        /// <summary>
        /// 保存或更新商品类型信息
        /// </summary>
        /// <param name="list">商品类型信息列表</param>
        /// <returns></returns>
        int SaveOrUpdateCommodityType(List<CommodityType> list);

        /// <summary>
        /// 查询商品类型信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        List<CommodityType> GetCommodityTypeList(IQuery query);
    }


    public class CommodityDaoImpl : ICommodityDao
    {
        //private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        //private SqliteDB sqldb = null;

        //private string configFile = "";
        //public CommodityDaoImpl()
        //{
        //    configFile = AppDomain.CurrentDomain.BaseDirectory + @"Log.config";
        //    XmlConfigurator.Configure(new System.IO.FileInfo(configFile));

        //    sqldb = SQLiteHelper.GetInstance();
        //}

        //public int SaveOrUpdateCommodityType(List<CommodityType> list)
        //{
        //    DbProviderFactory factory = SQLiteFactory.Instance;
        //    using (DbConnection conn = factory.CreateConnection())
        //    {
        //        DbTransaction trans = null;
        //        DbCommand cmd = null;
        //        try
        //        {
        //            // 连接数据库  
        //            conn.ConnectionString = sqldb.ConnectionString;
        //            conn.Open();
        //            trans = conn.BeginTransaction();
        //            String sql = "";
        //            cmd = conn.CreateCommand();
        //            cmd.Connection = conn;
        //            foreach (CommodityType model in list)
        //            {
        //                sql = "select id from commoditytype where id='" + model.id + "';";
        //                cmd.CommandText = sql;
        //                object id = cmd.ExecuteScalar();
        //                SQLiteParameter[] parameters = null;
        //                if (id == null)
        //                {
        //                    sql = "INSERT INTO `commoditytype` (`id`, `name`, `status`, `orde`, `create_date`, `update_date`) " +
        //                     " VALUES (@id, @name, @status, @orde, @create_date, @update_date);";
        //                    parameters = new SQLiteParameter[]{
        //                    new SQLiteParameter("@id", DbType.String),
        //                    new SQLiteParameter("@name", DbType.String), 
        //                    new SQLiteParameter("@status", DbType.Int32,4),
        //                    new SQLiteParameter("@orde", DbType.Int32,4), 
        //                    new SQLiteParameter("@create_date", DbType.DateTime), 
        //                    new SQLiteParameter("@update_date", DbType.DateTime)};
        //                    parameters[0].Value = Guid.NewGuid().ToString();
        //                    parameters[1].Value = model.name;
        //                    parameters[2].Value = model.status;
        //                    parameters[3].Value = model.order;
        //                    parameters[4].Value = DateTime.Now;
        //                    parameters[5].Value = DateTime.Now;

        //                }
        //                else
        //                {
        //                    sql = "UPDATE `commoditytype` set `name`=@name, `orde`=@orde, `update_date`=@update_date where id=@id;";
        //                    parameters = new SQLiteParameter[]{
        //                    new SQLiteParameter("@id", DbType.String),
        //                    new SQLiteParameter("@name", DbType.String),  
        //                    new SQLiteParameter("@orde", DbType.Int32,4),  
        //                    new SQLiteParameter("@update_date", DbType.DateTime)};
        //                    parameters[0].Value = Guid.NewGuid().ToString();
        //                    parameters[1].Value = model.name;
        //                    parameters[2].Value = model.order;
        //                    parameters[3].Value = DateTime.Now;
        //                }


        //                cmd.CommandText = sql;
        //                cmd.Parameters.AddRange(parameters);
        //                cmd.ExecuteNonQuery();
        //            }
        //            trans.Commit();
        //            return 0;
        //        }
        //        catch (SQLiteException ex)
        //        {
        //            log.Error("SaveBatch " + ex.Message);
        //            trans.Rollback();
        //            return -1;
        //        }
        //        finally
        //        {
        //            if (null != cmd) cmd.Dispose();
        //            if (null != conn) conn.Close();
        //        }
        //    }
        //}

        //public List<CommodityType> GetCommodityTypeList(IQuery query)
        //{
        //    List<CommodityType> list = new List<CommodityType>();
        //    if (null == query)
        //        return list;
        //    try
        //    {
        //        string sql = "";
        //        if (!String.IsNullOrEmpty(query.GetID()))
        //            sql = "SELECT `id`, `name`, `status`, `orde`, `create_date`, `update_date` FROM commoditytype where id ='" + query.GetID() + "' ";
        //        else
        //            sql = "SELECT `id`, `name`, `status`, `orde`, `create_date`, `update_date` FROM commoditytype ";

        //        DataTable dt = sqldb.ExecuteDataTable(CommandType.Text, sql.ToString());
        //        if (null != dt && dt.Rows.Count > 0)
        //        {
        //            CommodityType model = null;
        //            foreach (DataRow row in dt.Rows)
        //            {
        //                model = new CommodityType();
        //                model.id = Convert.ToString(row["id"]);
        //                model.name = Convert.ToString(row["name"]); 
        //                model.status = Convert.ToBoolean(row["status"]);
        //                model.order = Convert.ToInt32(row["orde"]); 
        //                model.createDate = Convert.ToDateTime(row["create_date"]).ToString();
        //                model.updateDate = Convert.ToDateTime(row["update_date"]).ToString(); 

        //                list.Add(model);
        //            }
        //        }

        //        return list;
        //    }
        //    catch (SQLiteException ex)
        //    {
        //        log.Error("GetRecommends " + ex.Message);
        //        list.Clear();
        //        return list;
        //    }
        //}
        public int SaveOrUpdateCommodityType(List<CommodityType> list)
        {
            throw new NotImplementedException();
        }

        public List<CommodityType> GetCommodityTypeList(IQuery query)
        {
            throw new NotImplementedException();
        }
    }
}
